Method and Apparatus for Message Flow and Transaction Queue Management

ABSTRACT

Management of transaction message flow utilizing a transaction message queue. The system and method are for use in financial transaction messaging systems. The system is designed to enable an administrator to monitor, distribute, control and receive alerts on the use and status of limited network and exchange resources. Users are grouped in a hierarchical manner, preferably including user level and group level, as well as possible additional levels such as account, tradable object, membership, and gateway levels. The message thresholds may be specified for each level to ensure that transmission of a given transaction does not exceed the number of messages permitted for the user, group, account, etc.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.16/691,121, filed Nov. 21, 2019, which is a continuation of U.S. patentapplication Ser. No. 16/152,915, filed Oct. 5, 2018, now U.S. Pat. No.10,540,719, which is a continuation of U.S. patent application Ser. No.14/460,337, filed Aug. 14, 2014, now U.S. Pat. No. 10,134,089, which isa continuation of U.S. patent application Ser. No. 14/056,463, filedOct. 17, 2013, now U.S. Pat. No. 8,839,269, which is a continuation ofU.S. patent application Ser. No. 11/417,513, filed May 3, 2006, now U.S.Pat. No. 8,589,948, which is a continuation of U.S. patent applicationSer. No. 10/196,056, filed Jul. 15, 2002, now U.S. Pat. No. 7,124,110,entitled “Method and Apparatus for Message Flow and Transaction QueueManagement,” the contents of each of which are fully incorporated hereinby reference for all purposes.

FIELD OF THE INVENTION

The present invention relates generally to the field of financialsystems and financial transaction messaging. More particularly, thepresent invention relates to a method and apparatus for managing afinancial transaction message queue.

BACKGROUND OF THE INVENTION

At the most general level, a trading entity is any entity with amembership to an exchange, or an entity that shares a membership in somemanner. Trading entities may be a trading house, an individual trader,or one or more groups of traders sharing a membership and otherwisesharing certain resources. Generally speaking then, a trading entity maybe an individual trader or group of traders that desire to accessmarkets and engage in market transactions via an exchange.

An electronic exchange typically provides a matching process betweentraders—buyers and sellers. Typical exchanges are EUREX®, LIFFE®,EURONEXT®, CME®, CBOT®, XETRA® and ISLAND®. Trading entities aretypically connected to an electronic exchange by way of a communicationlink to facilitate electronic messaging between the trading entities andthe exchange. The messaging may include orders, quotes (which areessentially two-sided orders), acknowledgements, fills, cancels,deletes, cancel and replace, and other well-known financial transactionmessages.

The communication link may utilize numerous telecommunicationtechnologies, including frame relay, X.25, DS-0, T-1, T-3, DS-3 (45 Mb),multiple DS-3 connections, DSL, cable or analog phone lines. Thecommunications links are preferably provided by tier 1 telecom providersand DS-3 ATM connections. The message format and messaging protocols arespecific to the particular exchange, and can utilize any protocol. Manyexchanges conform to the TCP/IP protocol suite for the transport andnetwork layers. Typically, the exchange provides a standardizedcommunication interface to which the member may connect a workstation,or more typically, a computer network gateway device, through which anumber of users may communicate with the exchange.

Many exchanges impose limits or restrictions on the communicationmessages received from their members or member firms. The limits aregenerally intended to ensure that the exchange computer system is notoverburdened, and to dissuade members from submitting excessive orunnecessary messages. Limits may be enforced in various manners. Forexample, some limits may be enforced by the exchange queuing (ordelaying) transaction messages once a limit has been reached. Anotherexample involves an exchange charging fees or penalties for transactionmessages once a limit has been reached. For example, the limits mayinclude a cap on the number of “in-flight” transactions. In-flighttransactions are those transactions that have been submitted to theexchange for which the exchange has not provided a return confirmationof receipt.

A further type of limit may be on the number of transactions submittedby a member in a given time period. Orders and quotes indicate awillingness to buy and/or sell, and are often revised and resubmitted bytraders to reflect changes in their desired positions. Traders mayrevise their transactions to reflect even small changes in the market,and when prices in the market move rapidly, this may result in largenumbers of transactions being submitted to the exchange. Excessivequoting (which refers to any type of transaction including orders andquotes) can place a burden on the exchange.

Another type of limit that is often imposed by exchanges is the overallaggregate measure of message traffic as measured in bytes in a givenperiod of time. This is commonly referred to as data transmission rate,or bandwidth usage. This limit may simply be a result of the physicallimitation imposed by the particular communication link, or it may be ameasured quantity.

With the increased use of automated trading tools, reaching or exceedingthese limits (e.g., five in-flight transactions on the ChicagoMercantile Exchange, or CME®) may occur rather easily. Indeed, the useof such tools can easily over-burden an exchange's message handlingcapacity. As such, some exchanges require the use of software atgateways that prevents the message traffic from exceeding specifiedlimits. Some exchanges even provide the software utilities for gatewaysthat connect a member to the exchange. Two example consequences of poortransaction messaging resource use are end user experience delay andtransaction costs.

Currently, gateway owners don't have the ability to control how thelimited messaging resources are distributed among the various users thatshare the gateway. Thus, software that limits the message trafficwithout regard to the individual trading entities that may be sharingthe communication link has the potential to result in a single user orgroup of users tying up most or all communications to an exchange. Thus,there is a need to more precisely control the transaction messagetraffic in view of the limited resources available.

BRIEF DESCRIPTION OF THE DRAWINGS

Exemplary embodiments of the present invention are described withreference to the following drawings, in which:

FIG. 1 is an example network configuration for a communication systemutilized to access one or more exchanges;

FIG. 2 is a preferred embodiment of a financial transaction messagemanagement system;

FIG. 3 is a preferred embodiment of a hierarchical grouping of traders;

FIGS. 4A through 4D is a preferred embodiment of displaying transactionmessaging resource allocations; and

FIG. 5 is a preferred method of managing financial transaction messages.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT(S)

A method and system for managing transaction message flow utilizing atransaction message queue is provided. The system and method are for usein financial transaction messaging systems. The system is designed toenable an administrator to monitor, distribute, control and receivealerts on the use and status of limited network and exchange resources.The system preferably runs on a communication gateway between users'trading workstations and a communications interface to a tradingexchange (e.g., CBOT®, CME®, EUREX®, etc.). The gateway may reside onthe trading workstations, or it may be located on a separate physicaldevice on a computer network. Similarly, a single physical device mayprovide more than one instantiation of a gateway. The system to tracksmessage flow and system usage parameters to ensure the amount of messagetraffic does not exceed predetermined message thresholds.

The preferred embodiments are directed to a system and method for use infinancial transaction messaging systems, particularly with respect totransaction messages. The term “transaction messages” refers to anynumber of different types of messages, including orders, quotes,acknowledgements, fills, cancels, deletes, cancel and replace, and otherwell-known financial transaction messages. The system is preferablyconfigured to manage any and all transaction messages. The systempreferably acts to throttle transaction message flow from differenttraders based on various limits. Thus, in one preferred embodiment, thesystem manages transaction messages originating from an automatedtrading system (which is capable of generating numerous transactions ata high rate) as well as manually generated messages (e.g., specificorder or quote messages resulting from direct user interaction with atrading software interface).

In alternative embodiments, the system may be used to regulate onlythose messages generated by an automated trading program operating on atrading workstation, and manually generated messages will not be subjectto the limit thresholds, and such messages will not be queued in thetransaction message queue of a present embodiment (the message may stillbe queued in the exchange queue). The term workstation as used hereincan include any computing device, including a personal computer, ahandheld device, etc. Preferably the system is configurable so theadministrator can select whether or not to exempt manually generatedtransactions.

FIG. 1 shows an example system for managing transaction message flow.Generally, the system, as shown, includes trading houses 102-106 thatare connected to exchanges 118-124 through one or more gateways 108-116.Each trading house 102-106 has one or more trading workstations. Forexample, trading house 102 can have up to N workstations, whereastrading houses 104 and 106 can support up to M and L workstations,respectively (where N, M and L can be any number). Although not shownfor clarity, individual traders or one or more groups of traders mayalso be included in the system, in which each trader or group of traderswould connect to the exchange in a similar fashion as the tradinghouses.

The system shows two possible configurations, although any number ofconfigurations is possible. In one configuration, trading house 102 isconnected to gateway 108 that communicates with exchanges 118-122through gateways 112-116. The assignee of the present application sellsone such gateway, referred to as TT Relay™, that connects to multiplegateways. Additionally, trading house 102 communicates with exchange 124through gateway 110. According to this configuration, the trading house102 communicates with the exchange through more than one gateway. Ofcourse, more network devices such as routers may exist along the pathbetween the trading house 102 and exchanges 118-124. In anotherconfiguration, trading houses 104, 106 are connected to exchange 124through gateway 110. According to this second configuration, the tradinghouse communicates with the exchange through one gateway.

As with the first configuration, more network devices may exist alongthe path between the trading houses and exchanges. It should also beunderstood that there are many possible variations beside the systemshown in the Figure. For example, gateway 110 may connect with gateways112-116 so that trading houses 104, 106 can connect with exchanges118-122. Moreover, the gateway(s) may reside on the tradingworkstations, or it may be located on a separate physical device on acomputer network. Similarly, a single physical device may provide morethan one instantiation of a gateway.

One or more groups of traders may exist within each trading house. Thenumber or type of groups may depend on the trading house itself. Forexample, sometimes when a trading house divides its traders into one ormore groups, it may be done for organizational reasons, or any otherreason the house may have. Traders may be grouped in additional wayssuch as by their workstations, the tradable objects that they trade, oreven by the trading house. There are many ways to group the traders,from an exchange perspective or a trading house perspective, in ahierarchical manner. Based on the hierarchical manner, which can beprogrammed in any way, the system tracks message flow and system usageparameters to ensure the amount of message traffic does not exceedpredetermined message thresholds.

Traders and related objects are preferably grouped in a hierarchicalmanner, including a user level and group level, as well as possibleadditional levels such as tradable object, software tool or application,account, membership, and gateway levels. Each level can have one or moreelements. In one embodiment, these elements could include particularmembers, particular trader groups, particular traders (identified bytrader IDs), particular accounts, particular tradable objects,particular types of tradable objects, particular classes of tradableobjects, and particular software trading applications. An “entity” maybe defined as including a single element, a single level or anycombination of elements or levels from the hierarchical structure. Thetransaction message thresholds may be specified for any entity to ensurethat transmission of a given transaction does not exceed the number ofmessages permitted.

Limits for any entity may include, but are not limited to, such thingsas the number of transaction messages per second (e.g., using a “slidingwindow” to count messages transmitted with the last second), the totalnumber of transaction messages for the day, the number of transactionsthat are “in-flight” (transactions submitted to an exchange that havenot yet been acknowledged by the exchange), the number of data bytes persecond or the total number of bytes for the day. Limits may be selectedso as to divide limited resources in a controlled fashion in order toincrease productivity and profits. Each user is preferably categorizedto belong to various entities. Thus, each user preferably has its ownset of parameters that make up its limit use profile, and the profileparameters correspond to multiple entities or levels. The thresholds maybe set manually by an administrator, or may be automatically set and/oradjusted. Automatic adjustment may be based on the number of fills(e.g., transactions to fills ratio—this may be used to increase thetotal number of transactions permitted per day), a given user's profitor other measure of success (this may be used to increase any of thelimits), a measure of bandwidth utilization or other criteria.

In the event that transmission of a given transaction message to theexchange would exceed a threshold limit, the message is preferablyplaced in a transaction message queue until it may be transmittedwithout exceeding a threshold limit. The system automatically updatesthe queue when related transaction messages are received from thetrading workstation(s), or when other limiting events occur. Thetransaction message queue may also automatically drop or reject messagesif they remain in the queue for a predetermined length of time. Thetransaction message queue (or other component of the gateway) mayfurther notify a user that a message is going to be, or has been,dropped or rejected.

The system preferably notifies an administrator (by email or othersuitable messaging system, including instant messaging or paging and/oron-screen message) in the event of limits being enforced resulting inqueuing of transaction messages. In addition, the system preferablyhighlights the effected user(s) on the monitor screen.

With reference to FIG. 2, a preferred embodiment of the transactionmessage management system, or gateway 200, will be described. Gateway200 is preferably implemented on any one of the gateways illustrated inFIG. 1. The gateway 200 allows an administrator, via administratorinterface 202 to monitor, distribute, control and receive alerts on theuse and status of limited network and exchange resources. The gateway200 acts as a communication gateway between users' trading workstations204 and a communications interface 206 to a trading exchange (e.g.,CBOT®, CME®, EUREX®, etc.).

The gateway 200 may reside on the same physical computing platform asthe trading workstations 204, or it may be located on a separatephysical device on a computer network. The gateway 200 may also bedistributed across multiple devices.

The physical computing device of the gateway 200 may also implement suchfunctions as a router, firewall, or other common network infrastructurecomponent. In addition, a single physical device may provide more thanone instantiation of a gateway 200. The connections to tradingworkstations may be through a wired or wireless LAN, WAN, or othersuitable connection medium.

There can also be an API (applications programming interface) betweenthe trading workstation 204 and the gateway 200. The gateway 200 can beany network device disposed in the communication path between tradingworkstations and an exchange. In addition, the functionality of thegateway 200 may be implemented at an exchange.

Similarly, the administrator interface may reside on the same physicalcomputing device as the gateway 200, or may be a remotely locatedworkstation or interface device, including a wired or wireless device.

The gateway 200 includes a transaction message manager 208 to implementa transaction message transmission policy. The policy sets forthresource utilization limits according to a multiple-level hierarchy. Themessage manager 208 tracks message flow and system usage parametersaccording to multi-level identification information using limit counters210 to ensure the amount of message traffic does not exceedpredetermined message thresholds stored in limit table 212.

Any messages that would cause a threshold to be exceeded are preferablyqueued in transaction message queue 214. The transaction message queueis preferably stored in memory associated with the computing platform.The type of memory used may be any suitable memory, and is not limitedto any particular type or structure. DRAM, RAM, FIFO buffers, FILO, etc.The storage mechanism may also take many forms, such as a databaseformat, tables of software pointers, a linked list, a lookup table, etc.Further, the term “queue” refers to any suitable message storage andhandling mechanism, and is not limited to a traditional first-infirst-out queue. Rather, the stored messages in the queue are managedusing the techniques set forth here. When the transaction messagemanager 208 receives a transaction message, it first checks to seewhether it is related to any message that may have been placed in thequeue. If the newly received transaction is related to a queued message,the queued message is updated to reflect the new information. Adescription of the queue management is set forth more fully below.

When an event occurs that causes any of the limit counters 210 todecrement, the transaction queue 214 is analyzed to determine whetherany messages may be transmitted to the exchange. An example event thatwould cause a limit counter 210 to decrement is the passage of time withrespect to a message threshold based on the number of messages allowedover a particular time frame. The transaction message manager willtransmit a queued message to the exchange via the gateway processingunit 216 if doing so does not violate the messaging policy. It may alsobe desirable to queue messages received from the exchange into an outqueue 218. One reason would be to conserve bandwidth between a tradingworkstation and a gateway. Further details of out queue 218 andaggregation of exchange messages may be found in the commonly assignedU.S. patent application Ser. No. 10/183,845, filed Jun. 26, 2002 in thename of Jens-Uwe Schluetter et al., entitled “System and Method forCoalescing Market Data at a Network Device,” Attorney Docket No. 02-453,the contents of which are hereby incorporated by reference.

With respect to FIG. 3, a multiple-level user identification hierarchyof a preferred embodiment will be described. Depicted in FIG. 3 are twoexchanges, two gateways, two members, three groups, four users and fourtradable objects. As used herein, the term “tradable object” referssimply to anything that can be traded with a quantity and/or price. Itincludes, but is not limited to, all types of tradable objects such asfinancial products, which can include, for example, stocks, options,bonds, futures, currency, and warrants, as well as funds, derivativesand collections of the foregoing, and all types of commodities, such asgrains, energy, and metals. The tradable object may be “real”, such asproducts that are listed by an exchange for trading, or “synthetic”,such as a combination of real products that is created by the user.

More or fewer levels of user classification may be used, depending onthe needs of the members and the dictates of the exchanges. The gatewaysand the exchanges may be interconnected using a many-to-one, one-to-manyrelationship. That is, multiple gateways may be connected to a singleexchange, and a single gateway may be connected to multiple exchanges.The gateway device preferably monitors and manages all communicationswith the exchanges, and also serves to perform any message formattranslation, if necessary.

Similarly, multiple gateways may connect to a single member, andmultiple members may connect to a single gateway. From the member leveland below, each level is preferably related in a one-to-manyrelationship. That is, a single member entity may include one or moregroups (and a group belongs to a single member), each group may includeone or more users (and a user belongs to a single group), and each usermay include one or more tradable objects (and a tradable object belongsto a single user). It should also be noted that limits may be based onclasses or types of tradable objects. For example, futures and optionsare two types of tradable objects. An October 100 IBM call is a tradableobject. Options related to IBM is class of tradable objects. Similarly,call options on IBM stock is another class of tradable objects thathappens to be a subset of the general class of IBM options. Octobercalls for IBM stock is another class of tradable objects that is asubset of the class of IBM call options.

Users sharing the same group level are preferably provided access to thetransaction messages and trading activity of other users within thegroup. This may be desirable when a group of traders is working togetherto achieve a common goal (such as, e.g., hedging investments).

An individual user may also be subcategorized based on the softwaretools or applications that are being used. That is, a user (oradministrator) may wish to separately monitor the transaction messagingrelating to a particular trading application being used (e.g., anautomated tool or a manual trading tool). In this particular case anentity may be defined as a single user's activities on a single tradingtool. Alternatively, an entity may be defined to include all users or asubset of users that use the particular trading application.

As shown in FIG. 3, users are preferably grouped in a hierarchicalmanner, or tree structure, meaning that each user is uniquely identifiedby multiple identification parameters (preferably at least two) orentity parameters, specifying which entities they belong to, with thepossibility that certain users share one or more identificationparameters at a given entity level in the hierarchy. For example, USER 1302, is identified by the 4-tuple: USER 1, GROUP 1, MEMBER 1, andGATEWAY 1. In contrast, USER 1 304 is identified by the 4-tuple USER 1,GROUP 2, MEMBER 1, and GATEWAY 1. Note also that each of USER 302, 304may alternately be identified as being part of GATEWAY 2. Preferably, auser is designated as belonging to a specific gateway.

The identification levels depicted in FIG. 3 are one embodiment of anexample identification hierarchy. Alternative embodiments may utilizemore or fewer levels. For example, one embodiment may use only the userlevel. Another embodiment using only a single gateway may utilize onlythe user and tradable object levels. Additional levels such as accountor software application may also be used. Furthermore, a user may beidentified by a single unique name or number that may be translated, ormapped, into a corresponding unique multiple-level name designation. Inone respect, this allows for more simplified messaging, in that thetransaction messages from the trading stations 204 to the gateway 200need not include all of the identification names or parameters in thehierarchy.

In a preferred embodiment, an administrator may select users, groups, orany other entity, and create a new entity containing the desired sets orsubsets of pre-existing entities. This newly created entity may then bemonitored and/or limited accordingly. In this way, the manner ofproviding a hierarchical arrangement of entities is flexible.

The gateway transaction message transmission policy is preferablyimplemented by ensuring the number or frequency of transaction messagestransmitted to an exchange does not exceed message thresholds. Thetransaction message thresholds may be specified for each entity toensure that transmission of a given transaction does not exceed thenumber of messages permitted for the entity. Limits for any particularentity may include such things as the number of messages per second(e.g., using a “sliding window” to count messages transmitted with thelast second), the total number of transaction messages for the day, thenumber of transactions that are “in-flight” (transactions submitted toan exchange that have not yet been acknowledged by the exchange), thenumber of data bytes per second or the total number of bytes for theday. Numerous other types of limits may also be used, and the above aremerely representative examples of useful limits.

With respect to FIGS. 4A-D, one embodiment of a graphical user interface(GUI) used for allocating the messaging resources is depicted. In table400, all the entities associated with an exchange are displayed. Datafields are provided for an administrator to enter limit values (orformulas) based on the various entities. In FIG. 4A, the entities areidentified by Member, Group, Trader, Tradable Object Type, and TradableObject. The levels at which the entities may be limited are Gateway,Member, Group, and Trader. As can be seen in FIG. 4A, the “Member”entity contains four members: TTMBR, TT-TST, TTSIM, and TTTRN. In thisembodiment, when an administrator types a value into any cell in the“MBR LIMIT” column, this value automatically propagates to all cells inthat column corresponding to the same member value. Thus, for example,typing a “10” into the cell for any user belonging to the TTSIM Memberentity will result in all the users belonging to the TTSIM Member entityto have a limit of 10 in-flight transactions. Similarly, in-flightlimits may be specified for the entire gateway in the GATEWAY LIMITcolumn, and group and trader limits may be specified for individualtraders in the TRDR LIMIT and GROUP LIMIT columns, respectively. Notethat the trader identified as Trader 001 (trader entity), SIM (Groupentity) and TTSIM (Membership entity) is listed three times, once foreach of three separate tradable objects. These entries may correspond tothree separate individuals, or may actually be the same person tradingthree separate tradable objects. In one preferred embodiment of FIG. 4A,the specified TRDR LIMIT applies to the cumulative messages for allproduct types, or it may act as a limit only to that tradable object,such that the trader's effective limit is the cumulative amount of alllisted types and/or tradable objects. However, a further preferredembodiment would allow the limits for a given trader to be set at thetrader level, and apply separate, non-cumulative limits at the producttype and tradable object levels.

A provision for timeouts is also provided at the Gateway (GW T/O) andMember (MBR T/O) levels. Preferably, the time increment is specified inseconds. If a message has remained in the queue for the timeout period,the transaction message is preferably deleted from the queue, and theuser is notified that the message has been deleted from the queue.

The TRDR FLOOR (Trader Floor) parameter indicates the number oftransactions that are permitted without payment of additional fees. TheTRDR FACTOR (Trader Factor) indicates the number of additionaltransactions that are permitted per fill. In a preferred embodiment, theTrader Floor and Trading Factor are used to dynamically configure thetotal transaction message limit for an entity. In a preferredembodiment, the total number of transactions is determined by either theTrader Floor parameter, or the Trading Factor multiplied by the numberof fills, whichever is greater. In an alternative embodiment, the totalnumber of transactions may equal the Trader floor parameter plus theTrader Factor times the number of fills. In other embodiments,alternative factors may be selected by an administrator, and combined inan appropriate manner. In the embodiment shown in FIG. 4A, the traderfloor and factor levels are applied only to the tradable objects levelof the transaction messages.

In one preferred embodiment, exceeding the total transaction limit willnot result in the queuing of transaction messages. Rather, the tradingentity or administrator is notified that the limit has been exceeded,and that further transaction messages may result in a fee.

FIGS. 4B-4D depict an example gateway status screen, a Trader statusscreen, and a Tradable Object status screen, respectively. The gatewayscreen of FIG. 4B preferably lists all gateways utilized in the system.The system preferably displays the number of transactions that arecurrently queued, the total number of messages that have been queuedsince the system was reset, the maximum number of messages queued at anygiven time, the current number of transactions in-flight, the totalnumber of transaction messages sent since the system was last reset, themaximum number of messages that were in flight at a given time, and thenumber of in-flight messages that will result in an alarm (visual oraudible, preferably to the administrator).

The screens of FIGS. 4C and 4D preferably contain any entity selected byan administrator. The entities may be selected from the exchange screenof FIG. 4A. Alternatively, entities may be automatically selected fordisplay based on various criteria, which are preferably configurable byan administrator. For example, any entities that approach or exceedlimits may be displayed, or any particularly active entities that do notpresently have limits set may be displayed.

FIG. 4C displays the statistics for a selected trader. Specifically, theinformation displayed is the number of currently queued messages, thetotal number of messages that have been queued, the maximum number ofmessages queued at any given time, the current number of in-flightmessages, and the maximum number of in-flight messages. FIG. 4D presentsinformation including the type of object and the tradable object. Thestatistics include the total number of fills, the total fill ratio, thenumber of trader transactions and the number of trader fills.

FIGS. 4A-4D are one embodiment of the display and limit screens. Theseare presented herein as examples, and the screens and the particularinformation being shown may change depending on what limits are beingfollowed, and other criteria determined by the intended use of thegateway system.

With respect to FIG. 5, a preferred embodiment of managing financialtransaction messages will be described. At block 502, the gateway 200program determines whether a limiting event has occurred. If no limitingevent occurs, the system waits for such an event. A limiting event maybe any event that the system has been configured to track. For example,limiting events including transaction message transmissions, transactionmessage receipts, time lapses, etc. For in-flight transactions, alimiting event may include the transmission of a transaction to theexchange (causing an increment, or count up, to the number of in-flighttransactions for the user), or the receipt of an order acknowledgementfrom the exchange (resulting in the appropriate counter beingdecremented, or counted down).

For limits relating to transactions per second (or other suitable timeperiod), the relevant user counter is incremented when a transactionmessage is transmitted, and decremented as time lapses. Similarly, fordata byte transmission rates, counters are increased based ontransmissions, and decremented as time lapses. Preferably, thetime-based counters are checked at a set time interval to determinewhether a decrement should occur, thus the limiting event may be atiming signal. The time period may be configurable, and for example, maybe in the 100's of milliseconds, but other values may be used. Theselection of the time interval may be determined based on the overallsystem load, including the number of users be serviced, as well as otherfactors.

Further limit events may include the receipt of fills. That is, a systemmay be configured to adjust the total number of transactions permittedbased on the number of fills.

At block 504, the appropriate counters are updated, or if appropriate,the limit threshold values may be revised. The counters include, but arenot limited to, those for tracking total transaction messages and totalbyte transmission, transaction message transmission rates, datatransmission rates, and in-flight transactions for any entity. Ofcourse, each limiting event will typically result in the adjustment ofcounters at the various levels corresponding to the user's hierarchicaldesignation or assignment, such as the user's group, account, gateway,or whatever entity applies, and which also may include counters forlevels below the user, such as tradable object. As stated above, certainthresholds may also be adjusted.

At block 506, if any of the counters are decremented (or alternatively,if any thresholds are increased), then control is passed to block 508 todetermine whether any queued messages may be transmitted. As discussedabove, a worst-case logic is preferably utilized, which requires allapplicable counts to be below the relevant thresholds before a queuedtransaction message is de-queued and sent to the exchange. If thecounters are only incremented, then a further limiting event is awaitedat block 502.

In the event that transmission of a given message to the exchange wouldexceed a threshold limit, the message is preferably placed in atransaction message queue until it may be transmitted without exceedinga threshold limit. The system automatically updates the queue whenrelated messages are received from the trading workstation(s). Thetransaction message queue may also automatically drop messages if theyremain in the queue for a predetermined (but configurable) length oftime.

The system preferably notifies an administrator in the event of limitsbeing enforced, resulting in queuing of transaction messages. Thenotification method is preferably configurable, and may includenotification by email, instant messaging, paging, an on-screen message,or other suitable messaging system. In addition, the system preferablyhighlights the effected user(s) on the monitor screen so theadministrator may easily identify the user. Whenever a user reaches alimit a notification is also preferably sent to the user's terminal.

Preferably, at any time the administrator may manually adjust any of theparameters to any of the entities at any level either before or after alimit is reached. This adjustment can preferably be done on the fly. Auser is preferably notified whenever the user's limits are adjusted.

The transaction message manager 208 preferably maintains three sets oflimit parameters in limit table 212: Default, Permanent, and Temporary.Any changes that are made are considered Temporary and will apply untilthe end of the current run (unless modified). At any time theadministrator can save the current setting as the Permanent setting orrestore either the Permanent setting or the Default setting. Oninvocation, the utility will use the Permanent setting. If a Permanentsetting has not been saved then Default setting will be used.

When limit parameters are changed, they may be applied to queuedmessages, or they may be applied forward in time (such that they willnot be used for transactions that are already in the message queue 214).Alternatively, the new limits may be applied to the queued messages.Whether the changes apply to queued messages may also be configurable bythe administrator. The administrator is also able to set the parameterlimits based on formulas to facilitate automatic limit adjustments. Theformulas, which if present make up part of the transaction messagetransmission policy, may take into account logged users (by name and/orby number), exchange response times, network utilization, gatewayutilization, other limits, status of other users, any measurement thatis being monitored, combinations of limits, etc.

The system can be used with any formulas desired by the administrator.The gateway system 200 may provide predetermined formulas, but may alsoprovide an interface to create new formulas. Still other embodimentshave intelligence to automatically calculate and change the parameters.For example, parameters may be automatically increased or decreased toallow greater throughput if the system detects that the gateway's datalines to an exchange or that the exchange itself can support a greaternumber of messages. This detection can be done by various techniquesknown to those of ordinary skill in the art including by using pingingtechniques or by querying routers regarding data line capacity.

As a result of reaching a limit, a user's requested transaction mighthave to be held in transaction message queue 214. When this occurs theuser is preferably notified that the transaction status is Queued. Theuser will preferably be able to remove queued transaction by submittinga “Remove queued” transaction.

To ensure that very stale orders are not sent to the market place, eachuser preferably has a transaction timeout parameter that identifies themaximum amount of time that an order can wait in queue before it isrejected due to timeout. The timeout parameter preferably does not applyto delete order transactions. It may be preferable to delete an orderlate as compared to never, but the same may not be true for new orchanged orders. In case the entity submits a second transaction relatedto a transaction in the queue then the following logic is applied in oneembodiment to determine which transaction stays in the transactionmessage queue 214:

-   -   The first delete for the transaction preferably stays in the        queue and will preferably never be replaced. This avoids        duplicate delete transactions. All subsequent related        transactions will be rejected indicating that a delete is        already in queue.    -   A new change transaction will preferably replace an older change        or cancel/replace transaction and be placed at the location of        the older transaction in the queue. The older transaction will        be rejected and the trader will preferably be notified.    -   A new cancel/replace transaction will preferably replace an        older change or cancel/replace transaction and will be placed at        the end of the queue.

A “truth table” for a preferred embodiment of the invention for queuinga transaction in the message transaction queue 214 is shown in Table 1.This logic is preferably used whenever a limit is reached or if there isa transaction from the same entity in queue.

TABLE 1 Old Trans. New Trans. None Delete All other transactions AddAppend new N/A Delete transaction New Old transaction replaced in queueby new Change to queue. transaction transaction. Cancel/Replacerejected. Old transaction removed, new appended to queue. Remove queuedUser option Old transaction removed from queue. Timeout N/A No action.Old transaction rejected due to timeout.

In Table 1, a New transaction (as specified in the first column ofTable 1) refers to the transaction that is being processed, and an Oldtransaction (as specified in the first row of Table 1) refers to arelated queued transaction. Thus, the treatment of a newly receivedtransaction depends on whether any related transaction is alreadypresent in the queue. For example, with respect to the second row ofTable 1, if the New transaction is an “Add” message (where Add refers tothe first transaction related to a particular order), to it will beappended to the queue if there is no prior (Old) related transaction.Additionally, because there should not be any “Delete” messages or any“other type” of messages that relate to a New “Add”, Table 1 indicatesthat such a scenario is not applicable (N/A in Table 1).

If the New transaction is a “Delete” message, the queue managementactions are indicated by the third row of Table 1. Specifically, aDelete message will be appended to the queue if there is no relatedmessage; it will be rejected if a prior related Delete message isalready in the queue; and for any other type of related prior message,the new Delete message will replace the prior message in the queue. Anew “Change” message will be handled in a manner similar to a newDelete. Likewise, a Cancel/Replace will be handled similarly, with theexception that if the related prior message is “any other type”, thenthe Old transaction is removed and the new Cancel/Replace message willbe appended to the queue (rather than taking the Old transaction's placewithin the queue).

Furthermore, as illustrated in Table 1, when the New transaction is a“Remove queued” and no related transaction message is in fact in thequeue, then the user has the option (as specified by “User option” inTable 1) to either send a delete to the exchange or to have the “Removequeued” transaction rejected. Finally, the last row of Table 1 indicatesthat when a timeout occurs, the Old transaction is removed from thequeue.

The administrator may modify the above rules, but it is preferred tomaintain no more then one related transaction in the transaction messagequeue 214. Related transactions are transactions related to the sameparticular order, for example a buy order for a tradable object isrelated to a delete request for all or a part of that buy order.Preferably, each order has an identification parameter in its messages.In such an embodiment, two transactions are related if they have thesame identifier. Preferably, the invention is configurable so that anytype of transaction can or cannot be exempted from the queuing. Someexample types of transactions include market orders, limit orders, stoporders, tradeouts (where a trader is trading out of all of his openpositions), deletes, etc.

Furthermore, the gateway system is not limited to any particular messageformat. The system may be adapted for use with any messaging formathaving unique packet structures, various data fields, etc, includingorder identifier parameters, etc. Once the format of the packets isdetermined, then one of skill in the art may retrieve the necessaryinformation to implement the message management system.

Since each entity has limits at each level and these limits can bedifferent a “worst case” logic is preferably used for limit checking.That is, as soon as a limit is reached at any level, transactions willstart queuing for all of the entities within that branch of the treehierarchy.

An Example of an “In” queue in action is shown in Table 2, wherein alimit is set to 5 transactions per 1000 ms. For timing purposes, alltransactions are considered to have occured at 0 time into themillisecond. All transactions are from same “entity”. The letter in theTransaction and Action columns represents a transaction identifier. To“de-queue” a message means to take a transaction out of the queue andprocess it (send it to the exchange).

TABLE 2 Time Transaction Counter Action Reason 0 Submit A 0 → 1 ToExchange Below limit, queue empty 107 Submit B 1 → 2 To Exchange Belowlimit, queue empty 214 Submit C 2 → 3 To Exchange Below limit, queueempty 290 Submit D 3 → 4 To Exchange Below limit, queue empty 400 SubmitE 4 → 5 To Exchange Below limit, queue empty 401 Submit F 5 Queue FLimit reached 550 Submit G 5 Queue G Limit reached 633 Change A (calledA1) 5 Queue A1 Limit reached 650 Submit H 5 Queue H Limit reached 750Delete A (called A2) 5 Queue A2 in place of Limit reached, truth tableA1 775 Delete A (called A3) 5 Reject A3 Limit reached, truth table 1000Counter reduced 4 → 5 De-queue F Below limit 1033 Submit I 5 Queue ILimit reached 1107 Submit J & Counter 4 → 5 Queue J, de-queue GTransaction from same reduced entity in queue, Below limit 1214 Counterreduced 4 → 5 De-queue A2 Below limit 1290 Counter reduced 4 → 5De-queue H Below limit 1400 Counter reduced 4 → 5 De-queue I Below limit2000 Counter reduced 4 → 5 De-queue J Below limit 2107 Counter reduced 4None Queue is empty 2108 Submit K 4 → 5 To Exchange Below limit, queueempty 2214 Counter reduced 4 None Queue is empty 2290 Counter reduced 3None Queue is empty 2400 Counter reduced 2 None Queue is empty 3000Counter reduced 1 None Queue is empty 3107 Counter reduced 0 None Queueis empty

In alternative embodiments, other variations are provided. In oneembodiment, added granularity is provided to enable different settingsbased on: transaction type, software application, tradable object,current P/L (profit/loss), Fills per sec, etc. In a further embodiment,the transactions may be prioritized in the queue based on factors suchas: user, type, user associated parameters, or any of the items used for“added granularity” above. A further embodiment includes the ability toset or change limits based on historical results (previous half of day,yesterday, last week, etc.).

In the above description those skilled in the art will recognize thatcircuit elements in block diagrams and boundaries between logic blocksare merely illustrative and that alternative embodiments may merge logicblocks or functional elements or impose an alternate decomposition offunctionality upon various logic blocks or elements. For example, thegateway processing may be performed prior to the transaction messagequeuing. Numerous other examples will be apparent to those of skill inthe art.

While the invention has been described in connection with a number ofexemplary embodiments, the foregoing is not intended to limit the scopeof the invention to a particular form, circuit arrangement, orsemiconductor topology. To the contrary, the invention is intended to bedefined only by the appended claims and to include such alternatives,modifications and variations as may be apparent to those skilled in theart upon reading the foregoing detailed description.

1. (canceled)
 2. A computer readable medium having stored thereininstructions executable by a processor, including instructionsexecutable to: determine, by a processor of a gateway, that a firstlimit for transmitting transaction messages from a first entity to anexchange over a communication link between the gateway and the exchangehas been reached, wherein the first entity is one of a plurality ofentities divided into one or more groups, wherein each entity in theplurality of entities is associated with a user, a tradeable object, andat least one limit, wherein the first entity is associated with thefirst limit, wherein the first limit is a number of transactions persecond; receive, by the processor of the gateway, a first transactionmessage after determining that the first limit has been reached, whereinthe first transaction message is of a first type, is from the firstentity, and includes a first transaction identification parameter;determine, by the processor of the gateway, that the first limitassociated with the first entity would be exceeded by transmitting thefirst transaction message to the exchange over the communication link;determine, by the processor of the gateway, that a second transactionmessage in a transaction message queue is related to the firsttransaction message, wherein the second transaction message is of asecond type, is from the first entity, and includes a second transactionidentification parameter, wherein the second transaction message isdetermined to be related to the first transaction message based on thefirst transaction identification parameter and the second transactionidentification parameter being the same; and update, by the processor ofthe gateway, the transaction message queue based on the first type ofthe first transaction message and the second type of the related secondtransaction message.
 3. The computer readable medium of claim 2, whereinthe first type of the first transaction message is one of the group of adelete message, a change message, and a cancel/replace message, whereinthe second type of the second transaction message is a delete message,wherein the transaction message queue is updated by rejecting the firsttransaction message.
 4. The computer readable medium of claim 2, whereinthe first type of the first transaction message is a delete message,wherein the second type of the second transaction message is one of thegroup of an add message, a change message, and a cancel/replace message,wherein the transaction message queue is updated by replacing the secondtransaction message with the first transaction message.
 5. The computerreadable medium of claim 2, wherein the first type of the firsttransaction message is a change message, wherein the second type of thesecond transaction message is one of the group of an add message, achange message, and a cancel/replace message, wherein the transactionmessage queue is updated by replacing the second transaction messagewith the first transaction message.
 6. The computer readable medium ofclaim 2, wherein the first type of the first transaction message is acancel/replace message, wherein the second type of the secondtransaction message is one of the group of an add message, a changemessage, and a cancel/replace message, wherein the transaction messagequeue is updated by removing the second transaction message andappending the first transaction message.
 7. The computer readable mediumof claim 2, wherein the first type of the first transaction message is aremove queued message, wherein the second type of the second transactionmessage is one of the group of an add message, a delete message, achange message, and a cancel/replace message, wherein the transactionmessage queue is updated by removing the second transaction message. 8.The computer readable medium of claim 2, wherein the first type of thefirst transaction message is a timeout message, wherein the transactionmessage queue is updated by rejecting the second transaction message inresponse to determining the second type of the second transactionmessage is not a delete message.
 9. The computer readable medium ofclaim 2, wherein the first entity is associated with a second limit. 10.The computer readable medium of claim 2, wherein the first entity isassociated with a second limit, wherein the second limit is a totalnumber of transaction messages for a day.
 11. The computer readablemedium of claim 2, wherein the first entity is associated with a secondlimit, wherein the second limit is a bandwidth usage limitation.